package com.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.basic.domain.PageResult;
import com.demo.pojo.User;
import com.demo.service.criteria.UserQueryCriteria;
import com.demo.service.dto.UserDto;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author cjy
 * @since 2024-10-10
 */
public interface IUserService extends IService<User> {

    // 更新或者添加数据
    UserDto saveOrUpdate(UserDto userDto);

    // 查询所有符合criteria条件的数据
    List<UserDto> queryAll(UserQueryCriteria criteria);

    // 分页查询所有符合criteria条件的数据
    PageResult<UserDto> queryAll(UserQueryCriteria criteria, Pageable pageable);

    // 根据id获取数据
    UserDto queryById(Long id);

    // 根据用户条件获取一个用户信息，如果条件符合多个数据则取第一条
    UserDto queryOne(UserQueryCriteria criteria);

    // 统计数量
    Long count(UserQueryCriteria criteria);

    // 获取一条对应条件的用户实体数据
    User getOne(UserQueryCriteria criteria);

    // 获取所有对应条件的用户实体数据
    List<User> getAll(UserQueryCriteria criteria);

    // 根据id逻辑删除
    int deleteId(Long id);

    // 根据条件逻辑删除
    int deleteByMore(UserQueryCriteria criteria);

    List<User> testXml();

}
